package io.renren.common.page;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.renren.common.constant.Constant;
import io.renren.common.utils.ConvertUtils;

import java.util.List;

/**
 * TODO
 *
 * @author 40659
 * @since 2025/2/26 10:20
 */
public class PageUtils {

    /**
     * 获取分页对象
     *
     * @param page       分页参数
     * @param orderField 前端传入的排序字段
     * @param order      前端传入的排序方式
     */
    public static void setOrder(Page<?> page, String orderField, String order) {
        //前端字段排序
        if (StrUtil.isNotBlank(orderField) && StrUtil.isNotBlank(order)) {
            if (Constant.ASC.equalsIgnoreCase(order)) {
                page.addOrder(OrderItem.asc(orderField));
            } else {
                page.addOrder(OrderItem.desc(orderField));
            }
        }
    }

    public static <T> PageData<T> getPageData(List<?> list, long total, Class<T> target) {
        List<T> targetList = ConvertUtils.sourceToTarget(list, target);

        return new PageData<>(targetList, total);
    }

    public static <T> PageData<T> getPageData(IPage<T> page, Class<T> target) {
        return getPageData(page.getRecords(), page.getTotal(), target);
    }
}
